Back to Index

Info on this URL

Riflessioni sul futuro

Non � cosa pi� difficile a trattare, n� pi� dubia a riuscire, n� pi� periculosa a maneggiare, che farsi capo a introdurre nuovi ordini; perch� lo introduttore ha per nimici tutti quelli che degli ordini vecchi fanno bene, e ha tepidi defensori tutti quelli che degli ordini nuovi farebbero bene.

Niccol� Machiavelli (Il Principe, 1513)

Presentazione

Una prima versione di questo articolo � stata presentata durante la conferenza dei programmatori Amiga (IPISA), tenutasi a Milano nel novembre 1995. Sono note scritte da uno sviluppatore di software che nella comunit� Amiga ha avuto il privilegio di confrontarsi con tecnologie avanzate da una parte, e problematiche esistenziali dall'altra. Con Amiga, queste riflessioni sul futuro hanno in comune la continua ricerca dell'eccellenza, mentre si lanciano in un futuro dove piattaforme diverse si interconnettono e si sovrappongono sempre pi�.

Introduzione

I pionieri della Silicon Valley sono nati nel posto giusto, al momento giusto. In Italia, societ� come Apple, Commodore e Sinclair hanno portato la democrazia nel campo dell'informatica. Macchine accessibili a tutti. La possibilit� di esplorare e costruire mondi nuovi. Fare tanto con poco. Nuovi orizzonti. Crescere.

Se acquistare un calcolatore � dunque diventato facile, scrivere software sta diventando sempre pi� difficile e incerto. Occorrono anni per conoscere bene un sistema. Anni per portare a compimento un progetto. E intanto ci pu� venire meno il terreno sotto ai piedi. Quello che un giorno pare tecnicamente vincente, il giorno dopo pu� essere gi� morto. Siamo ancora nel turbine di un'evoluzione imprevedibile quanto esplosiva. Certo � che la complessit� � aumentata, e tende ad aumentare ancora.

Sistemi come Amiga facevano sembrare tutto pi� facile, 10 anni fa. L'hardware migliore insieme al software migliore. Tutto costruito da zero, senza compromessi legati al passato. E che parola magica, il multitasking. Quanti sogni ha ispirato in chi non l'aveva, e quanti discorsi questa parola sostiene ancora oggi.

Chi programma per studio o per passione potr� sempre chiudere gli occhi di fronte alle incertezze del mercato. E magari sognare di riaprirli davanti a una BeBox, o dietro a un paio di occhiali in cui il reale e il virtuale si confondono. E se il giorno dopo non si trova neanche un pezzo di ricambio, poco male: era solo un'avventura. Sistemi come Amiga sono un'ottima nave scuola, e come tale ci lasciano comunque liberi di guardarci intorno e vivere altre esperienze, senza troppe preoccupazioni per il futuro.

Per coloro i quali programmare � diventata una professione, o un impegno per costruire un futuro migliore, il discorso si fa pi� serio. I giovani programmatori di oggi saranno presto meno giovani, e avranno pi� responsabilit�. � facile sentirsi spiriti liberi, e fare le cose per scelta e con entusiasmo. Ma forse domani, per assicurare un futuro ai loro figli, tanti spiriti liberi saranno costretti a scrivere l'ennesimo programma gestionale su un sistema che disprezzano, o dovranno fare manutenzione a dei programmi scritti in COBOL prima della loro nascita. Forse non � questo il futuro a cui un giovane programmatore di oggi aspira.

Sarebbe bello, facile ed entusiasmante fermarsi a dipingere un quadro tutto rosa del futuro. Ma parlare del futuro pu� essere appassionante anche quando vanno considerate alcune ombre. Questo articolo intende inoltre unire qualche considerazione di fondo ai discorsi pi� tecnici, cos� frequenti nel campo della programmazione. Computer e sistemi operativi si evolvono in un mondo �vero�, come molti appassionati Amiga hanno avuto (tristemente) modo di imparare da vicino.

Se siamo programmatori per hobby o di mestiere, o anche solo semplici appassionati di informatica, non potr� che farci bene tenere gli occhi aperti su quanto accade fuori: il mondo dei computer � in ogni caso molto stimolante. Forse conosciamo il computer su cui lavoriamo come le nostre tasche. E magari ci piace sentirci almeno in parte superiori a Microsoft, la pi� grande software house del mondo. Ma pochi sanno chi � e che cosa fa la societ� al secondo posto nella graduatoria, o per che cosa sia pi� noto il SAS Institute, il cui nome compare sul compilatore C per Amiga. Forse non ci domandiamo neanche se il futuro dei sistemi operativi verr� deciso da entit� politiche come la Object Management Group, o se dipender� invece da quello che si sta preparando in centri di ricerca pi� o meno discreti. In che misura sappiamo che cosa chiede il mercato? � facile venire avvolti in una visione scintillante, ma limitata e un po' sbilanciata del mondo del software. Eppure basterebbe poco. Nel momento in cui prendiamo coscienza di un possibile limite, abbiamo gi� messo un piede nella direzione giusta.

A costo di generalizzare e semplificare al limite del lecito, questo articolo vuole essere un piccolo tributo alla forza delle idee. Pensieri da condividere, prospettive personali, la ricerca dell'equilibrio tra l'ideale e il pratico, idee da scambiare e da cui far nascere altre idee. Anche facendo qualche confronto tra i vari sistemi operativi, e traendo spunto da diversi sistemi emergenti.

L'importanza di pianificare

I paesi del Nord Europa hanno avuto una �fortuna� che noi non abbiamo: inverni freddi hanno costretto generazioni e generazioni a prepararsi a una stagione avversa, pena l'estinzione. Anno dopo anno, questi popoli hanno dovuto prevedere, calcolare, organizzare, imparando bene a pianificare. Gli abitanti dei paesi con un clima pi� caldo, invece, sono sempre stati liberi di improvvisare soluzioni veloci ai problemi che si presentavano di giorno in giorno. Ne � risultata una specializzazione nel modo di porsi di fronte ai problemi. In Italia ci riconosciamo in quello stereotipo che ci vuole fantasiosi, creativi, abili improvvisatori, e diciamo che i popoli nordeuropei sono pi� �freddi� e calcolatori.

Ogni specializzazione ha i suoi vantaggi. Osservava un medico (italiano) che preferirebbe farsi aprire il cervello da un neurochirurgo napoletano, piuttosto che da uno tedesco. Mentre quest'ultimo avrebbe probabilmente preparato meglio tutto l'intervento a tavolino, l'italiano avrebbe forse saputo reagire pi� rapidamente qualora fosse comparsa una goccia di sangue non prevista. E cos� potrebbe essere per un programmatore che deve finire un lavoro poche ore prima di un'importante dimostrazione.

Ma guardiamo ai possibili problemi. Il nostro � un paese capace di coniare monete da 100 lire in tre misure diverse e incompatibili tra loro nel giro di quattro anni. E questo accade in molti altri campi. Amiga ha rischiato la morte in un sistema dove i conti venivano fatti da banchieri di sei mesi in sei mesi, dedicando sempre meno agli investimenti a lungo termine. Con i risultati che conosciamo.

Intorno a noi � in atto una tendenza che in ogni campo privilegia sempre pi� chi fa progetti a lungo termine. Dall'economia, all'industria, alla scienza, al software. Pare che l'informatica di domani sar� molto pi� orientata agli oggetti. Questi oggetti vanno definiti con molta cura, prima di essere usati (e riusati). E questo approccio � pi� vicino a una mentalit� nordica, con cui probabilmente dovremo competere sul mercato.

Metodi tradizionali di programmazione prevedono fino a un 30% del tempo complessivo dedicato alla pianificazione iniziale, con almeno un 20% di programmazione e la seconda met� del lavoro interamente dedicata a rifiniture e prove. Ma esistono gi� oggi metodi di programmazione di successo in cui non si prevede di scrivere una sola riga di codice prima di aver svolto il 60% del lavoro. Per molti programmatori, invece, pianificare vuole dire �scomporre in funzioni mentre si scrive il codice�.

Nei sistemi object-oriented emergenti un'accorta pianificazione consente di avere gruppi di lavoro ad altissimo rendimento, in cui solo il 5% di �superprogrammatori� definisce framework e regole (e dovr� conoscere perfettamente il sistema), mentre al 95% viene richiesto un grado di conoscenza generale molto basso rispetto alle aspettative pi� tradizionali. Ci� � possibile solo dando grande importanza al rispetto da parte del gruppo di �implementatori� delle specifiche definite in fase di pianificazione.

I sistemi che da noi hanno reso accessibile l'informatica a tutti hanno una triste fama di attirare programmatori bravissimi quanto solitari e �smanettoni�. Di quelli che si siedono al computer e iniziano a scrivere codice dalla sera alla mattina, spesso fermandosi a pensare solo quando si presentano dei problemi. � probabile che organizzando di pi� prima, si potrebbe lavorare molto meglio. E ci� varr� ancora di pi� con i linguaggi e le metodologie di programmazione che verranno. Soprattutto in un mondo in cui non si lavora da soli, ma in gruppo. L'universit� (anch'essa una forma di �pianificazione�) ci prepara a questo e ad altro, mentre da autodidatti siamo liberi di correre un po' di pi�, ma a rischio di avanzare su pericolose distorsioni. La passione � un ingrediente di vitale importanza, ma � importante indirizzarla nelle direzioni giuste.

Se dunque ogni tanto sorridiamo nel sentire un bambino che elenca a memoria i nomi dei linguaggi di cui ha appena sentito il nome, �quindi sa programmare�, guardiamoci tutti indietro: Smalltalk, uno dei primi ambienti di sviluppo veramente orientati agli oggetti, � nato presso il centro di ricerca Xerox di Palo Alto (PARC) negli anni 70. Quasi dieci anni prima del �PC�, e quindici anni prima di Amiga. Se oggi, in qualit� di programmatori ancora a digiuno di oggetti, parliamo con chi afferma di �respirare e masticare� C++ da ben nove anni, non ci viene forse da chiederci che cosa abbiamo fatto in questi anni, quasi come uno che si sveglia e si accorge di aver perso il treno? Abbiamo investito bene nel nostro futuro?

Oggi abbiamo il tempo di scegliere come lavorare domani. Se vorremo programmare con successo per sistemi come Java, Cairo e CommonPoint, probabilmente dovremo pianificare molto di pi� di quanto madre natura e i sistemi operativi pi� diffusi ci abbiano insegnato.

Tendenze

Qualsiasi cosa noi sviluppiamo, se sapremo costruire sulla cresta di un'onda che avanza potremo vedere moltiplicate le nostre energie senza alcuno sforzo aggiuntivo, grazie alla spinta di un mercato in espansione. Al contrario, tutte le nostre fatiche potrebbero essere vanificate da un'onda avversa.

Vale la pena abituarsi a osservare le tendenze del settore in cui lavoriamo. Ad esempio, come programmatori, oggi potremmo notare:

  • Realizzazione di una �grande rete� comprendente: dati, video (videotelefono, conferenze, TV interattiva, ecc.), audio (musica, telefono, ecc.), sistemi di comando e controllo (apparecchiature, luci, allarmi, ecc.)
  • Architetture client/server e network-centric immerse in Internet
  • Informatica sempre pi� diffusa e nascosta: calcolatori e microcontrollori in automobili, televisori, telefoni, orologi, giocattoli, elettrodomestici, ecc.
  • Dispositivi portatili �Personal Intelligent Communicator�
  • Riconoscimento del parlato e sintesi vocale
  • Globalizzazione del software (con particolare espansione dei mercati asiatici)
  • Nuovi modi di prendere in mano la situazione: integrazione e reengineering
  • Aumento di priorit� di valori come qualit�, etica, ecologia
  • Maggiore importanza dell'investimento a lungo termine
  • Aumento dell'et� media della popolazione: nuovi bisogni e politiche sociali

In una sorta di quiz, sono state citate nell'introduzione alcune organizzazioni che forse dalla finestra dei sistemi pi� diffusi notiamo poco.

La seconda societ� di software dopo Microsoft � Oracle. � il leader mondiale nel campo della gestione dei dati (soprattutto sistemi client/server). Si sta espandendo nel settore delle reti, mostrando interesse anche verso i sistemi meno costosi. Qualche mese fa era vicina ad acquistare Apple, mentre di recente ha raggiunto un accordo con Acorn (di cui la Olivetti detiene il 58% di propriet�) per la realizzazione di un terminale Internet a basso costo (circa 500 $). In una simile visione verrebbe semplificato il personal computer, che caricherebbe la maggior parte dei programmi dalla rete invece che dal disco rigido, e verrebbe valorizzato il ruolo dei calcolatori pi� potenti (i server) che stanno a monte della rete.

L'altra ditta, il SAS Institute �del compilatore Amiga�, � all'ottavo posto tra le societ� di software indipendenti. Il suo prodotto di punta � il SAS System, uno dei pi� usati sistemi di gestione delle informazioni finalizzate al supporto decisionale. Per molti � difficile anche solo concepire quali esigenze possa soddisfare un simile sistema. Eppure, SAS Institute ha pi� di tre milioni e mezzo di utenti.

Tra i prodotti �interessanti� varrebbe la pena citare Lotus Notes, che ha cambiato radicalmente il modo di lavorare di chi lo usa, permettendo di organizzare e condividere in modi nuovi l'esperienza all'interno di un'organizzazione. Se non fosse stato per questo prodotto, IBM non avrebbe investito pi� di tre miliardi di dollari per acquisire la Lotus. Anche l'avanzata impetuosa dei servizi Internet, potenzialmente una concorrenza a basso costo, � stata per ora gestita da Lotus come una nuova opportunit� per Notes.

Anche in Europa non mancano i giganti del software, come la tedesca SAP, che produce una suite di prodotti gestionali come R/3, che sono talmente richiesti da coinvolgere investimenti nell'ordine dei 10 miliardi di dollari all'anno.

Microsoft invece si accontenta dell'80% di... tutto. Se la presenza di una societ� come Microsoft � talmente ingombrante da fare stare tutti pi� stretti nel campo dei personal computer, si consideri che in altri sistemi la sua presenza � tuttora impercettibile. Nel campo del software orizzontale (i pacchetti standard che si vendono nei negozi) � gi� stato inventato quasi tutto e la concorrenza � feroce, ma per le soluzioni verticali (programmi �su misura� in settori molto specifici) sono ancora tempi da pionieri. E generalmente non solo c'� meno concorrenza, ma � pi� facile scegliere la piattaforma con gli strumenti di sviluppo migliori.

Ma gi� si prospettano nuove tendenze. Da una parte, � indubbio che la prossima ondata di software vedr� un uso pi� diffuso di componenti (concettualmente simili agli oggetti, ma pi� ad alto livello). D'altra parte stanno emergendo velocemente nuovi modi di distribuire, connettere e far funzionare le applicazioni, come Internet e Java.

Ideato dalla Sun, Java � sia un linguaggio (simile a un C++ semplificato) che un computer virtuale, in grado di coesistere con qualsiasi sistema operativo ospite. Sono in corso di realizzazione processori Java a basso costo (come picoJAVA e microJAVA, di Sun), da inserire nei pi� disparati prodotti elettronici, dal telefono al forno, e anche per questi apparecchi societ� come Novell stanno progettando la possibile connessione in rete. Questa � una delle tante indicazioni di come il software avr� una presenza sempre maggiore nelle cose di tutti i giorni. Cos� come, a parit� di disponibilit� economica del mercato, il personal computer toglie da anni terreno alla vendita di automobili, l'informatica sta entrando in modo sempre pi� diffuso nel mondo del consumo.

Pi� volte rappresentanti Microsoft hanno lanciato messaggi agli sviluppatori lasciando intendere quanto sia meglio puntare sul verticale, perch� nessuno avrebbe speranza di successo con un nuovo prodotto come una videoscrittura. Eppure anche un'azienda come Microsoft potrebbe perdere terreno, se non riuscisse a scomporre le proprie applicazioni grandi e monolitiche in componenti pi� piccoli da distribuire e usare anche separatamente, in base alle necessit� dell'utente. Se poi si considera che sistemi come Java consentono di caricare dalla rete quando necessario i programmi (o delle semplici interfacce di accesso) insieme ai dati, � facile osservare che potrebbero essere contati i giorni in cui si devono acquistare in anticipo dei programmi che offrono molto pi� del necessario e restano legati un singolo sistema operativo. In sintesi, si intravede uno scontro tra una generazione di �suite� (interi ambienti di lavoro) e una fatta di componenti e �applet� (piccoli programmi caricati dalla rete in base alle necessit� del momento).

La Object Management Group (OMG), citata nell'introduzione, � un comitato che sta lavorando a uno standard industriale per condividere oggetti attraverso piattaforme diverse. Questa specifica si chiama CORBA (da Common Object Request Broker Architecture), e si propone come un ponte tra tecnologie diverse. Se questo standard dovesse avere successo, si potr�, tra le altre cose, fare un �drag and drop� di oggetti tra architetture che oggi sono incompatibili tra loro (come Java, OLE/COM/DCOM di Microsoft, e OpenDoc usato da Apple, IBM e altri).

In un certo senso, anche tecnologie apparentemente complementari potrebbero competere tra loro, rallentandosi un po' a vicenda. Non � semplice, infatti, per chi investe come per chi acquista, mettere a fuoco attenzione, energie e risorse su tanti obiettivi diversi. � pi� facile lottare per una sola rivoluzione alla volta. Internet e il World Wide Web, per esempio, stanno distogliendo interesse da altre tecnologie software. � un mondo che indubbiamente si sta ancora complicando, invece di semplificarsi. Per� sar� anche pieno di nuove opportunit�.

Considerazioni hardware

I calcolatori da scrivania negli ultimi anni sono diventati cos� potenti da poter ospitare sistemi operativi prima riservati a macchine che occupavano un'intera stanza con aria condizionata. Finch� non si assester� l'evoluzione dell'hardware, � difficile che inizi a stabilizzarsi e a convergere lo sviluppo del software. Intanto, la frammentazione dei sistemi operativi � stata tale da separare l'evoluzione dell'hardware da quella del software. Oggi � possibile acquistare un calcolatore e scegliere a parte uno o pi� sistemi operativi.

Tra le piattaforme emergenti vi � lo standard hardware PReP, con cui Apple, IBM, Motorola e altri si sono accordati su una specifica basata sull'uso di processori PowerPC (scelti anche da Amiga Technologies per la linea Power Amiga). Le specifiche PReP comprendono aspetti come la sequenza di boot, il bus di espansione e le connessioni con il mondo esterno. Oggi sono disponibili per le piattaforme PReP diversi sistemi operativi, tra cui Windows NT, AIX, OS/2 e Solaris.

Gli attuali sistemi PowerPC di Apple non sono PReP-compatibili. Apple ha inoltre preferito legare il proprio sistema operativo a un minimo di circuiteria custom, come degli zoccoli ROM, per cui Mac OS ancora non funziona (almeno ufficialmente) su sistemi PReP. In realt� diverse ditte hanno trovato delle soluzioni per aggirare questi ostacoli aggiungendo delle interfacce software. Evidentemente IBM � interessata, in quanto i suoi clienti potrebbero usare il Mac OS su sistemi PowerPC IBM in produzione oggi. Lo stesso vale per la comunit� Amiga. Un'apertura di Apple all'uso di interfacce di compatibilit� di terze parti permetterebbe a numerosi utenti di emulatori Mac di entrare nella legalit�, acquistando una licenza approvata da Apple.

Nel corso del 1995 � stata definita la specifica Common Hardware Reference Platform (CHRP, o pi� semplicemente PowerPC Platform): un'estensione a PReP che verr� adottata anche da Apple. I primi sistemi sono previsti per i prossimi mesi. Con un hardware del genere, gli utenti saranno ancora pi� liberi di scegliere un sistema operativo senza dover riconsiderare il calcolatore. E con la contemporanea adozione del bus PCI (previsto da CHRP), anche le schede di espansione diventano compatibli tra sistemi diversi. Anche BeBox, la novit� del momento costituita da un sistema multiprocessore per �tecnofili, lunatici e capelloni� (parole di Jean-Louis Gass�e, fondatore della societ�) � compatibile con CHRP. E anche Amiga Technologies sta facendo i conti con queste prospettive. Quando tutto gira su tutto, pochi possono permettersi di essere tagliati fuori.

Sia Intel che il seguito dei costruttori di �compatibili� non sono stati a guardare immobili. L'avanzata dei sistemi PReP/CHRP � stata pi� lenta del previsto. Confrontarsi con uno standard costituito da 15 anni di storia di PC e pi� di 100 milioni di utenti non � facile, soprattutto quando le ultime generazioni di sistemi Pentium rendono pi� sottile la superiorit� del PowerPC in termini di rapporto prezzo/prestazioni.

Un'altra tendenza hardware poco considerata � legata alla possibilit� di sostituire gran parte dei sistemi fissi (desktop) con dei computer portatili. Ormai si possono scegliere configurazioni e tastiere senza compromessi. Sistemi del genere sono poco ingombranti e hanno schermi piatti che non sfarfallano e non emettono radiazioni; consumano poca energia, hanno un sistema di backup incorporato, e si portano a casa o al sicuro quando serve.

Un fiume da attraversare

Nell'evoluzione di un programmatore, si potrebbe immaginare un fiume che separa la realt� di oggi da quello che probabilmente sar� il modo di lavorare di domani. Al di l� del fiume, il mondo � composto di oggetti. Vista con il distacco del tempo, questa potrebbe essere una moda passeggera. Ma molti, oggi, hanno gi� iniziato a bagnarsi in questo fiume.

Dall'altra parte del fiume, la produttivit� del programmatore sar� immensamente superiore. Sar� possibile comprendere e riusare con pi� facilit� il codice scritto da noi o da altri (se i pezzi non fossero comprensibili, sarebbe troppo grande la tentazione di riscriverli). Si potranno costruire programmi molto complessi assemblando per tre quarti componenti gi� pronti, e costruendo solo il quarto che resta, concentrando l'attenzione e il lavoro su quello che si sa fare meglio. Questi componenti potranno essere presi dall'ambiente operativo, da terze parti, o dalle proprie librerie personali. Sar� come poter costruire un grattacielo usando interi piani prefabbricati.

Esisteranno dei grandi magazzini online di componenti. Sar� possibile vendere e comperare componenti e soluzioni complete attraverso Internet. Il pagamento potr� essere legato all'acquisto o all'uso effettivo (�a ore�), anche tramite funzioni incorporate nei nuovi sistemi operativi. I piccoli sviluppatori potranno appoggiarsi a dei centri di servizi che metteranno a disposizione del pubblico versioni dimostrative e prodotti completi. Se per esempio gli utenti non avranno bisogno di un'applicazione ultraprofessionale, potranno acquistare solo i componenti necessari a costruire un programma pi� semplice. Componenti aggiuntivi saranno disponibili anche da terze parti, e potranno comunicare tra loro.

La diffusione dei componenti render� pi� facile la configurazione di un sistema, e consentir� di soddisfare meglio le esigenze dell'utente. Anche la differenza tra software orizzontale e verticale potrebbe venire ridefinita in termini di componenti: qualche componente in pi� o in meno, e il software cambia da generico a specializzato. Cos� la videoscrittura potrebbe diventare parte di un pacchetto per notai, e il programma di elaborazione di immagini si presterebbe a un'integrazione in un sistema di radiologia. Lo stesso metodo sarebbe applicabile al software scalabile (ad esempio, ove esistono versioni �light�, �personal� e �professional�).

Se da una parte tutto ci� tender� a ridurre la duplicazione di sforzi (e quindi la domanda di lavoro), aprir� anche nuovi mercati, in parte simili agli ambienti di sviluppo tipici dell'Italia di oggi: piccole software house e progetti medio-piccoli (da 1 a 5 programmatori). Sar� invece un po' pi� faticoso per le grandi software house adattarsi a gestire applicazioni pi� piccole, dal momento che oggi impiegano centinaia di persone per costruire applicazioni molto complesse. Gran parte del mercato del software potrebbe venire riallineato su nuove basi.

Se gi� le metodologie object-oriented incrementano notevolmente la produttivit� del programmatore, l'efficienza sar� ulteriormente migliorata dal fatto che singoli progetti pi� piccoli comportano meno persone che devono coordinarsi tra loro. Ci sono molti motivi per cui 100 programmatori non sono neanche lontanamente 100 volte meglio di un singolo bravo programmatore, o anzi per cui a volte � vero il contrario. Considerando solo gli sforzi e le perdite di tempo legate alla comunicazione �uno a uno� all'interno di un gruppo di n programmatori, notiamo che questi sono proporzionali a (n�-n)/2: 10 programmatori devono parlarsi 45 volte pi� di due programmatori.

Vi � dunque una tendenza verso metodologie object-oriented, e un'altra che vede applicazioni basarsi su componenti sempre pi� piccoli. L'effetto combinato di questi due fattori potrebbe portare a risultati sorprendenti sulla produttivit� e sul piacere di lavorare. Per alcune aziende potrebbe essere cruciale il solo fatto di poter lanciare sul mercato un prodotto in meno tempo. Ma anche se i miglioramenti fossero per ipotesi solo minimi, nessuno potr� permettersi di restare al di qua del fiume, quando la concorrenza � gi� dall'altra parte.

� ragionevole che alcuni di questo concetti siano pi� difficilmente apprezzabili da chi non programma, o da chi ha lavorato sempre a progetti gestibili da una singola persona, magari anche completabili in pochi mesi di lavoro. Si pu� per� riassumere che probabilmente i programmatori di domani saranno fortunati: potranno lavorare meglio e produrre di pi�. La programmazione a oggetti � gi� qui. Il software a componenti sta arrivando. Mentre sembrava prossimo un futuro in cui i giganti del software avrebbero dominato, in quanto unici a poter costruire applicazioni sempre pi� complesse, vi � una nuova tendenza verso applicazioni basate su componenti, alla portata delle organizzazioni pi� �piccole�. Ci sar� spazio anche per i programmatori solitari e per nuove professioni, come l'integratore di componenti. Per i programmatori la curva di apprendimento sar� molto ripida. Imparare a lavorare bene con tecniche object-oriented � difficile e richiede tempo. Gli aspetti pi� tecnici e la complessit� in generale, invece, tenderanno a diminuire, essendo concentrati verso chi � pi� qualificato per un dato compito.

Ambienti operativi

L'evoluzione, la competizione, il timore del grande e il semplice desiderio di qualcosa di �diverso� hanno dato la luce a una miriade di nuovi sistemi operativi. Da quelli pi� conosciuti come NextStep, Plan 9 e Spring, a quelli limitati all'ambito accademico come Exokernel, Flux, Scout e Spin. Da quelli recentissimi come Be OS, a quelli gi� morti (ma molto istruttivi) come PenPoint. Da quelli per sistemi verticali come Geos, Magic Cap, OS/9 e QNX, ai progetti non conclusi, come il Workplace OS. In un altro contesto, sarebbero indubbiamente degni di attenzione il sistema operativo del Newton (nel campo dei piccoli �assistenti digitali�) e di TAOS, interessante per chi scrive giochi (ma non solo).

NextStep merita una menzione particolare se non altro perch� ha raggiunto l'altra sponda del fiume con diversi anni di vantaggio sugli altri. Il sistema operativo di NeXT ha per ora anche l'interfaccia utente pi� elegante e gli strumenti di sviluppo pi� evoluti. Ma la societ� fondata da Steve Jobs, per sua stessa ammissione, non ha n� l'ambizione, n� la tecnologia, n� l'apertura verso il mondo dei nuovi sistemi di IBM/Taligent e Microsoft. Anche negli Stati Uniti, ove i prodotti di NeXT sono pi� diffusi che altrove, NextStep (e l'equivalente OpenStep per piattaforme come Intel) resta un sistema consigliato a chi sviluppa software a diffusione limitata.

Apple e il Macintosh, una volta cos� innovativi, con gli anni hanno perso in tecnologia e in identit�. Nel futuro del Mac forse ci saranno presto delle sorprese, perch� Apple ne ha bisogno. Lo stesso per OS/2, pi� moderno, ma con una quota di mercato ancora pi� piccola (intorno al 5% dei PC). La pratica ha dimostrato che nessun sistema operativo, per quanto tecnologicamente eccellente, pu� sopravvivere a lungo al di sotto di una certa quota del mercato generale (se non dominando almeno in un settore di nicchia).

A conclusione di questa panoramica sui futuri possibili, citiamo ad esempio un ambiente operativo (CommonPoint di IBM/Taligent) e un sistema operativo (Cairo di Microsoft), tra i pochi gi� �al di l� del fiume�. Entrambi potrebbero funzionare su un sistema da scrivania (Pentium, PowerPC o altri) di oggi, e nel contempo dare indicazioni su come potrebbe o dovrebbe essere un sistema operativo del futuro.

Si � tracciata una sfumata distinzione tra un pi� generale �ambiente operativo� e un pi� specifico �sistema operativo�: un ambiente operativo come CommonPoint pu� coesistere con il sistema operativo ospite (cos� come Windows 3.1 si appoggia al DOS, o Java risiede nell'ambiente ospite). Un sistema operativo, invece, oltre a essere un'entit� completa e a s� stante, � pi� legato all'hardware e non � integrabile con altri sistemi operativi (salvo, al momento, con l'uso di emulatori).

Taligent CommonPoint

Taligent � stata fondata nel marzo 1992 da Apple e IBM, con l'obiettivo di creare degli standard di fatto nel campo della tecnologia object-oriented. In seguito si � aggiunta Hewlett-Packard. Nel 1995 la societ� � stata trasformata in una unit� di ricerca e sviluppo (denominata Taligent Object Technology Center) controllata da IBM.

L'ambiente operativo sviluppato da Taligent si chiama CommonPoint, e ha ereditato gran parte del progetto Pink di Apple. Il nome Pink deriva dagli appunti relativi a un ipotetico System �post-7�, scritti su fogliettini di colore rosa (pink) nel corso di una riunione presso Apple, molti anni prima di Taligent. Nato dunque per essere un nuovo sistema operativo per il Macintosh, CommonPoint � oggi entrato a far parte di un progetto con cui IBM compete con gli standard di Microsoft.

Il lancio ufficiale di CommonPoint al pubblico � previsto per la seconda met� del 1996, nella versione che i progettisti chiamano Olympic. In seguito potrebbe essere reso disponibile un microkernel, o altre soluzioni che permetterebbero di usare CommonPoint da solo (senza ulteriori sistemi operativi).

Taligent nel corso degli anni ha fatto una selezione delle migliori metodologie di programmazione, e avrebbe molto da insegnare a qualsiasi programmatore. CommonPoint ha tutte le funzionalit� di un moderno sistema operativo orientato agli oggetti, frutto di anni di lavoro senza compromessi n� legami con il passato. Al momento ha pi� di 100 framework che coprono le necessit� pi� disparate, dalla grafica alla telefonia, dalle reti ai database, dal debugging alla gestione delle licenze software.

CommonPoint � �cross platform�: funziona su diversi sistemi operativi, come OS/2, Windows 95, Windows NT, AIX e il futuro Mac OS. Da questo punto di vista, rappresenta un elemento unificante in un mondo frammentato. CommonPoint usa principalmente le funzioni di basso livello del sistema ospite, quindi non aggiunge strati appesantendo la velocit� di esecuzione delle applicazioni. Per fare un esempio, una gestione di finestre CommonPoint potrebbe usare direttamente i driver video del sistema ospite, invece delle funzioni dell'interfaccia utente.

Avvantaggiato dall'esperienza di IBM nella gestione di grandi organizzazioni, CommonPoint � pi� aperto agli standard e ai sistemi esistenti di altri sistemi operativi. Dalle reti, ai protocolli, agli oggetti, ai dati: sono previste interfacce per comunicare con virtualmente tutti i sistemi esistenti in un'attivit� moderna.

L'ambiente � decisamente �task-centered computing�: molto drag and drop e un modello �saveless� per i documenti. Per fare un esempio pratico, in una videoscrittura non ci sarebbero comandi per caricare o memorizzare un testo. Esiste solo il documento, con una sua storia. Il documento potrebbe essere preso e buttato sull'icona della videoscrittura, della stampante, della posta o del fax. Sono naturalmente possibili ulteriori funzioni per limitare la storia delle revisioni del testo, o per fare una stampa direttamente dal programma di videoscrittura. Ma non sono necessarie. I programmi stessi tendono a essere nascosti, e attivati automaticamente quando un oggetto viene selezionato. Anche se l'oggetto sta dentro ad altri oggetti (come gli oggetti di grafica e testo nelle pagine di un giornale).

Il primo impatto di un programmatore con CommonPoint pu� essere traumatico, soprattutto per chi non ha esperienza in programmazione object-oriented con C++. Anche all'interno dell'ambiente operativo, il riuso degli oggetti � tale che il codice � grande appena una frazione di quello di un equivalente sistema operativo tradizionale. Pur essendo molto elegante, CommonPoint resta vasto. E utilizzando componenti molto interconnessi (dove non � immediato capire chi influenza chi), a volte � meglio ricompilarlo tutto. E per ricompilarlo ci vogliono 25 ore. Su 32 macchine collegate in rete. Questa � destinata a rimanere una curiosit�, in quanto presto verr� utilizzato e reso disponibile un sistema basato su database per gestire la compilazione incrementale dei componenti modificati (e delle relative reazioni a catena). Anche il debugging richiede strumenti complessi, che tengono conto delle gerarchie degli oggetti.

Chi non conosce CommonPoint tende inizialmente a chiedersi il motivo di tante regole che vanno rispettate. Le ragioni si fanno pi� chiare quando si vedono alcuni vantaggi: il rispetto delle regole porta con s� risultati inaspettati e graditi. Leggere e capire il codice proprio e di altri pu� diventare facile quanto bere un bicchiere d'acqua. Inoltre, si ottengono �gratis� e senza complessit� aggiuntiva delle funzionalit� che altrimenti richiederebbero molto lavoro, come l'undo e il redo multilivello, la condivisione di dati e la possibilit� di lavorare contemporaneamente e a distanza sullo stesso documento (anche da sistemi operativi diversi). Il tutto per il solo fatto che il codice � stato scritto in un certo modo, seguendo delle direttive che lasciano aperte molte porte.

Microsoft Cairo

Per Microsoft, la terra al di l� del fiume si chiama Cairo. Questo nome in codice inizialmente era stato associato all'ormai prossimo Windows NT 4.0, che sarebbe dovuto essere un sistema operativo completamente object-oriented con un'interfaccia utente simile a quella di Windows tradizionale (oggi rappresentato da Windows 95). In pratica, Windows NT 4.0 non comprender� tutte le funzioni del progetto Cairo, che nel frattempo � stato ridefinito come un'insieme di tecnologie, pi� che un sistema operativo in senso stretto.

Microsoft propone due ponti paralleli per una transizione graduale a Cairo (prevista non prima del 1998): un ponte ripido, che passa attraverso Daytona (Windows NT 3.5x, disponibile oggi) e si congiunge direttamente a Cairo, e un ponte pi� agevole per i rimanenti 100 e pi� milioni di utenti Windows, che passa attraverso le versioni (o estensioni) di Windows denominate Nashville (in previsione per il 1996) e Memphis (1997). Idealmente, alla conclusione di tale periodo, Microsoft vorrebbe lavorare con un unico sistema operativo. � utile ricordare che gi� oggi Microsoft pone la compatibilit� con Windows NT (su piattaforma Intel) tra i requisiti per la certificazione di compatibilit� con Windows 95. Quindi il software non dovrebbe mancare, e gli investimenti degli sviluppatori resterebbero tutelati. Resta possibile l'emulazione del codice Intel anche su piattaforme Windows NT non-Intel.

Come anche CommonPoint, con cui ha in comune molti dei concetti gi� esposti, Cairo prevede di cambiare il modo in cui il software viene acquistato e venduto: applicazioni suddivise in componenti, utilizzabili separatamente. Anche Cairo racchiuder� in un unico filing system virtuale e orientato agli oggetti la gestione dei file, delle applicazioni, dei dati, della posta, della rete locale e di Internet.

In quanto evoluzione di Windows NT, Cairo sar� un sistema operativo di rete potente e sicuro. L'interfaccia utente ereditata ed evoluta da Windows 95, che per allora sar� probabilmente il sistema operativo pi� diffuso, dovrebbe rendere facile e poco traumatica la migrazione degli utenti. Le fortune di Cairo dipendono quindi anche dal successo di Windows NT e di Windows 95 nei rispettivi campi (fascia alta e fascia bassa), dal momento che entrambi i sistemi dovrebbero convergere in Cairo. Ma vale anche il contrario: Windows NT 3.5x e Windows 95 sono costretti gi� oggi a crescere nell'ombra di Cairo, e ci� � fonte di incertezze.

In Cairo, Microsoft sta facendo sue le migliori tecnologie informatiche. Per molti osservatori questa � una novit�. Dietro le quinte, Microsoft da anni investe in alta tecnologia i frutti del successo di prodotti spesso criticati per il loro legame con il passato. Per Microsoft come per Intel, 100 milioni di utenti possono essere un freno all'innovazione quanto sono un vantaggio in termini di mercato. Oltre a estendersi in territori nuovi, Microsoft intende venire incontro ancora di pi� agli utenti di oggi, imparando anche dalle funzioni migliori dei concorrenti. Indubbiamente, potr� trarre vantaggio dall'esperienza di sistemi come CommonPoint.

Prima che sia pronto Cairo, CommonPoint e il sistema operativo di NeXT hanno il tempo di conquistare quote di mercato. Ma Microsoft sa giocare bene sulle anticipazioni di prodotti in via di sviluppo. Molti terranno presente che �� in arrivo Cairo�, piuttosto che investire in qualcos'altro. Inoltre, Microsoft pu� avvalersi dell'esperienza dei concorrenti, evitando di ripeterne gli errori. Nel frattempo, spetta principalmente a organizzazioni come IBM/Taligent e NeXT il difficile compito di promuovere una nuova tecnologia e una nuova cultura.

Il successo di Cairo, come quello di CommonPoint, non � ovvio n� scontato. Ma Cairo porta il marchio Microsoft, e per numerosi utenti e sviluppatori questo � sufficiente a giustificare una scelta (�per andare sul sicuro�). Altri, invece, preferiscono ricordare che nel 1987 Microsoft promise al mondo che OS/2 sarebbe stato il sistema operativo del futuro. In questo campo � tutto molto relativo. Chi accetta di lavorarci, e soprattutto chi lo vuole fare come innnovatore, deve per ora rinunciare a ogni pretesa di stabilit�.

Copyright � 1995, 1996 dell'Autore